<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>08_关于分号问题</title>
</head>
<body>
<!--
    1、js一条语句的后面可以不加分号
    2、是否加分号是编码风格问题，没有应该不应该，只有喜欢不喜欢
    3、在下面两种情况下不加分号会有问题
        * 小括号开头的前一条语句
        * 中方括号开头的前一条语句
        * 如果下一行的第一个token是 ( , [ , / , + , - 这五个字符之一的话， Javascript 将不会自动在上一行句尾加上分号
    4、解决办法：在行首加分号
    5、强有力的例子：vue.js
    6、知乎热议：https://www.zhihu.com/question/20298345
-->
<script>
 var a = 3
 ;(function() {
     console.log('...')
 })()
 /*
    Uncaught TypeError: 3 is not a function
    错误理解：
        var a = 3(function() {
            console.log('...')
        })()

        3() 3 不是个函数，调用报错
 */

 var b = 4
 ;[1, 3, 5].forEach(function(item) {
    console.log(item)
 })
 /*
    Uncaught TypeError: Cannot read property 'forEach' of undefined
     var b = 4[1, 3, 5].forEach(function(item) {
        console.log(item)
    })

    4[1, 3, 5] 不是个数组 值为 undefined  undefined.forEach() 报错
 */
</script>
</body>
</html>